package cn.cjxy.springboot_mybatis01.controller;

import cn.cjxy.springboot_mybatis01.domain.User;
import cn.cjxy.springboot_mybatis01.mapper.UserMapper;
import cn.cjxy.springboot_mybatis01.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 控制器层
 * 负责数据交互
 * 用户通过地址进入此层，通过对应的url匹配对应方法
 */
@RequestMapping("/user")
@RestController
public class UserController {
    //依赖注入
    @Autowired
    private IUserService userService;

    /**
     * 查询所有接口
     * @return
     */
    @GetMapping//http://localhost:8080/user
    public List<User> findAll() {
        List<User> userList = userService.findAll();
        return userList;
    }

    /**
     * 根据id查询用户接口
     * @param id
     * @return
     */
    @GetMapping("/{id}")//http://localhost:8080/user/3
    public User findbyId(@PathVariable("id") Integer id){//@PathVariable("id")  将路径参数中名为id的值赋予给此参数
        User user = userService.findById(id);
        return user;
    }

    /**
     *
     * 前端不能直接向后端传递java对象，可以传递json数据对象
     * @RequestBody 将前端传递的json对象赋值到User中，条件是前端的json对象字段和后端一致
     * @param user
     */
    @PostMapping
    public void insertUser(@RequestBody User user){
        userService.insert(user);
    }
    //todo 修改用户  修改使用@PutMapping注解

    /**
     * 根据用户名称删除用户
     * @param name
     */
    @DeleteMapping//http://localhost:8080/user
    public void deleteUser(String name){
        userService.delete(name);
    }
}
